import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// 导入 axios
import Axios from "axios";

// 导入 时间格式化插件
import Moment from "moment";

Vue.config.productionTip = false; //代码检查


// 使用 mint-ui 引入全部组件
// import MintUI from 'mint-ui';
// Vue.use(MintUI);
// 修改为 按需引入
import { Toast, Header, Swipe, SwipeItem, Lazyload, Button, Switch, Badge, Indicator, InfiniteScroll } from "mint-ui";

Vue.component(Header.name, Header);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Button.name, Button);
Vue.component(Badge.name, Badge);
Vue.component(Switch.name, Switch);
// Vue.component(Loadmore.name, Loadmore);
Vue.use(InfiniteScroll);
// Vue.use(Toast);
Vue.prototype.$toast = Toast;
Vue.use(Lazyload);



import 'mint-ui/lib/style.css';

// 引入全局的 css 样式
import '../public/css/reset.css';

// 配置公共的 url
Axios.defaults.baseURL = 'http://127.0.0.1:3006/';
// 配置 axios
Vue.prototype.$axios = Axios;


// 注册全局的导航栏组件
import Navbar from "@/components/Common/Navbar";
Vue.component(Navbar.name, Navbar);
// 注册全局的 评论框 组件
import Comment from "@/components/Common/Comment.vue";
Vue.component(Comment.name, Comment);
// 注册全局的轮播图组件
import MySwiper from "@/components/Common/MySwiper.vue";
Vue.component(MySwiper.name, MySwiper);


// 自定义 moment 全局过滤器
Vue.filter('converTime', function (data, formatStr) {
  return Moment(data).format(formatStr);
});
// 自定义 相对 时间 过滤器
Vue.filter('relativeTime', function (data) {
  return Moment(data).fromNow();
});
// 设置中文显示
Moment.locale('zh-cn');

// 控制字数显示的过滤器
Vue.filter('controllShow', function (str, num) {
  //如果当前字符串长度小于num,返回原值
  if (str.length <= num) {
    return str;
  }
  //如果当前字符串长度大于num,则截取e~num-1位
  if (str.length > num) {
    return str.substr(0, num - 1) + '...';
  }
});

/* 图片查看器 */
import VuePreview from 'vue-preview'
// default install
Vue.use(VuePreview);//内部会原型Vue.compnent('vue-preview', VuePreview);


/* axios 请求拦截器 */
// 添加请求拦截器
Axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 加载提示框
  Indicator.open({
    text: '玩命加载ing...',
    spinnerType: 'fading-circle'
  });
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
Axios.interceptors.response.use(function (response) {
  // 关闭加载提示框
  Indicator.close();
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});


// 将 bus 对象 挂载在 Vue 的原型上  bus对象
import EventBus from './EventBus.js';
Vue.prototype.$bus = EventBus;

new Vue({
  router,
  // 挂载 store 实例
  store,
  render: h => h(App)
}).$mount("#app");
